/***************************************************************************/
/* Procedimiento:  Buq_MuelleInsertar
/* Descripcion:   Insertar o Modifica una fila en la tabla Buq_Muelle
/* Parametros:    ?InfoParametros
/*                pTransaccion. Numero identificador de la Transaccion
/*                pMensaje. Mensaje de comfirmacion o excepcion
/* Comentarios:         
/****************************************************************************/

PROCEDURE  Buq_MuelleInsertarModificar(pptda_buq_muelle NUMBER, pmuelle NUMBER, pf_atraque VARCHAR2, 
								ph_atraque VARCHAR2, pf_desatraque VARCHAR2, ph_desatraque VARCHAR2, 
								pliberado_pago_muelle VARCHAR2, patraque_oficial VARCHAR2, pdesatraque_oficial VARCHAR2, 
								penmienda VARCHAR2, pmal_tiempo VARCHAR2, pagenciamiento VARCHAR2, 
								pexento_pago_muelle VARCHAR2, pnaviera NUMBER, pcliente_facturar NUMBER, 
								plibera_zarpe VARCHAR2, pusername VARCHAR2, pmov_cctm NUMBER, 
								pmov_cctm2 NUMBER, pafecta_infraestructura VARCHAR2,  pTransaccion OUT NUMBER, pMensaje OUT VARCHAR2)
AS
vExisteRegistro NUMBER(1);
BEGIN
  SELECT count(*)
  INTO   vExisteRegistro
  FROM   Buq_Muelle
  WHERE  nidDocumento=pNidDocumento;
  
  IF vExisteRegistro=0 THEN
    INSERT INTO Buq_Muelle
	           (vid, ptda_buq_muelle, muelle, 
				f_atraque, h_atraque, f_desatraque, 
				h_desatraque, liberado_pago_muelle, atraque_oficial, 
				desatraque_oficial, enmienda, mal_tiempo, 
				agenciamiento, exento_pago_muelle, naviera, 
				cliente_facturar, libera_zarpe, username, 
				mov_cctm, mov_cctm2, afecta_infraestructura)
    VALUES     (seq_Buq_Muelle.nextval, pptda_buq_muelle, pmuelle, 
				to_date(pf_atraque,'DD/MM/YYYY HH24:MI:SS'), ph_atraque, to_date(pf_desatraque,'DD/MM/YYYY HH24:MI:SS'), 
				ph_desatraque, pliberado_pago_muelle, patraque_oficial, 
				pdesatraque_oficial, penmienda, pmal_tiempo, 
				pagenciamiento, pexento_pago_muelle, pnaviera, 
				pcliente_facturar, plibera_zarpe, pusername, 
				pmov_cctm, pmov_cctm2, pafecta_infraestructura);
  ELSE
    UPDATE Buq_Muelle
    SET    ptda_buq_muelle=pptda_buq_muelle, muelle=pmuelle, 
			f_atraque=to_date(pf_atraque,'DD/MM/YYYY HH24:MI:SS'), h_atraque=ph_atraque, f_desatraque=to_date(pf_desatraque,'DD/MM/YYYY HH24:MI:SS'), 
			h_desatraque=ph_desatraque, liberado_pago_muelle=pliberado_pago_muelle, atraque_oficial=patraque_oficial, 
			desatraque_oficial=pdesatraque_oficial, enmienda=penmienda, mal_tiempo=pmal_tiempo, 
			agenciamiento=pagenciamiento, exento_pago_muelle=pexento_pago_muelle, naviera=pnaviera, 
			cliente_facturar=pcliente_facturar, libera_zarpe=plibera_zarpe, username=pusername, 
			mov_cctm=pmov_cctm, mov_cctm2=pmov_cctm2, afecta_infraestructura=pafecta_infraestructura
    WHERE  nidDocumento=pNidDocumento;
  END IF;
  
  COMMIT;
  pTransaccion := 1;
  pMensaje := 'Terminado OK';
  dbms_output.put_line('Terminado OK');

EXCEPTION
  WHEN OTHERS THEN
    pTransaccion := 0;
    pMensaje := 'Error en  Buq_Muelle_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm;
    dbms_output.put_line('Error en  Buq_Muelle_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm);
END;
